package com.enation.app.javashop.core.client.goods;

import com.enation.app.javashop.core.goods.model.enums.QuantityLogType;
import com.enation.app.javashop.core.goods.model.vo.GoodsQuantityVO;

import java.util.List;

/**
 * 商品库存操作客户端
 *
 * @author zh
 * @version v7.0
 * @date 18/9/20 下午7:31
 * @since v7.0
 */
public interface GoodsQuantityClient {
    /**
     * 增加库存
     *
     * @param orderSn       订单编号
     * @param goodsQuantity 要增加的库存vo
     * @param logType       日志类型
     * @return 如果增加成功返回真，否则返回假
     */
    boolean addGoodsQuantity(String orderSn, GoodsQuantityVO goodsQuantity, QuantityLogType logType);


    /**
     * 库存扣减接口
     *
     * @param orderSn           订单编号
     * @param logType           日志类型
     * @param goodsQuantityList 要扣减的库存vo List
     * @return 如果扣减成功返回真，否则返回假
     */
    boolean reduceGoodsQuantity(String orderSn, QuantityLogType logType, List<GoodsQuantityVO> goodsQuantityList);

    /**
     * 订单回滚库存
     *
     * @param sn 订单sn
     */
    void rollbackReduce(String sn);
}
